<?php

/**
 * consultaesp actions.
 *
 * @package    sf_sandbox
 * @subpackage consultaesp
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2692 2006-11-15 21:03:55Z fabien $
 */
class consultaespActions extends sfActions
{
  /**
   * Executes index action
   *
   */
    public function executeIndex()
  {
  	//$this->validaredad();
    //$this->forward('default', 'module');
  }

   public function executeRango()
  {
  	$this->valor = $this->getRequestParameter('rangovalor');
	$this->getUser()->setAttribute('valor_rango', $this->valor);
	//$this->el_rango = $this->getRequestParameter('rangovalor');
  }


  public function validateEdad()
  {
  	$edad = $this->getRequestParameter('edad');
  	//el campo es obligatorio
	if(!$edad)
	{
		$this->getRequest()->setError('edad','El campo edad no se debe dejar vacío');
		return false;
	}
	//elvalor debe esta entre 1 y 99
	$validnumber = new sfNumberValidator();
	$validnumber->initialize($this->getContext(),array(
	'min'       => 1,
	'min_error' => 'La edad debe ser mayor',
	'max'       => 99,
	'max_error' => 'la edad es no valida',
	));
	if(!$validnumber->execute($edad))
	{
		return false;
	}
	return true;
  }

  public function executeAjax()
	{
		$arrpo=array();
		$arrp=array();
		$arrea=array();
		$arrpop=array();
		$arrid=array();
	    $this->ajax = $this->getRequestParameter('ajax');
		if ($this->getRequestParameter('ajax')=='1')
	    {
	    	$c2 = new Criteria();
	    	$c2->add(CarreraPeer::CF_DECANATO,$this->getRequestParameter('decanat'));
	        $this->datosdecanat = CarreraPeer::doSelect($c2);
	    }
	  	if ($this->getRequestParameter('ajax')=='2')
	    {
		  	$c3 = new Criteria();
	    	$c3->add(CarreraPeer::CP_CARRERA,$this->getRequestParameter('parametro'));
          	$this->datos = CarreraPeer::doSelect($c3);
	    }
	  	if ($this->getRequestParameter('ajax')=='3')
	    {
  			//buscamos la lista de id's de los psicologos y orientadores
  			$po = new Criteria();
  			$po->addJoin(UsuarioDepartamentoPeer::DEPARTAMENTO_ORIENTACION_ID,DepartamentoOrientacionPeer::ID);
  			$po->add(DepartamentoOrientacionPeer::DECANATO_ID,$this->getRequestParameter('deca'));
  			$polista = UsuarioDepartamentoPeer::doSelect($po);
  			//echo $polista->getUsuarioId();exit;
  			//creamos un arreglo que contiene solo los id's de los psicologos y orientadores
  			$ipo=0;
  			foreach($polista as $regpo)
  			{
  				$arrpo[$ipo] = $regpo->getUsuarioId();
  				$ipo++;
  			}
  			/******************************************/
			$c5 = new Criteria();
            $c5->addJoin(DatoPersonalPeer::USUARIO_ID, AteneausuarioPeer::ID);
            $c5->add(AteneausuarioPeer::ID,$arrpo,Criteria::IN);
            $c5->addJoin(RolPeer::ID, AteneausuarioPeer::ROL_ID);
            $c5->add(RolPeer::ID, $this->getRequestParameter('parametro'));
            $this->personal = DatoPersonalPeer::doSelect($c5);
			$c5 = new Criteria();
			$c5->add(RolPeer::ID,$this->getRequestParameter('parametro'));
			$tipo = RolPeer::doSelect($c5);
			$this->quien = $tipo[0]->getDescripcion();
	    }
	}

 public function executePdf()
  {

  	$arrc = array();
  	$arrea = array();
  	$arrid = array();
  	$arrp = array();
  	$arrpo = array();
  	$arrpop = array();
	$romanos=array(
	"1"=>"I",
	"2"=>"II",
	"3"=>"III",
	"4"=>"IV",
	"5"=>"V",
	"6"=>"VI",
	"7"=>"VII",
	"8"=>"VIII",
	"9"=>"IX",
	"10"=>"X");
  	$meses=array(
	"01"=>"Enero",
	"02"=>"Febrero",
	"03"=>"Marzo",
	"04"=>"Abril",
	"05"=>"Mayo",
	"06"=>"Junio",
	"07"=>"Julio",
	"08"=>"Agosto",
	"09"=>"Septiembre",
	"10"=>"Octubre",
	"11"=>"Noviembre",
	"12"=>"Diciembre");
  	require('reporte/pdfconsultasespecificas.php');


			//Creaci�n del objeto de la clase heredada

			$pdf=new PDF();
			$pdf->AliasNbPages();
			$pdf->Open();
			$pdf->AddPage();
			$pdf->SetFont('Times','',12);
			/**************************/
			$pdf->Cell(17);
			$pdf->Cell(10,3,"Fecha de Emisi�n:   ".date("d / m / Y"));
			$pdf->ln(5);
			$pdf->Cell(17);
			if($this->getUser()->getAttribute('valor_rango') == "1")
			{
				$pdf->Cell(10,3,"Desde:  ".$_POST['fechadesde']."            Hasta:  ".$_POST['fechahasta']);
			}
			if($this->getUser()->getAttribute('valor_rango') == "2")
			{
				$pdf->Cell(10,3,"Mes a Reportar:   ".$meses[$_POST['mes']]);
			}
			$pdf->ln(5);
			$pdf->Cell(17);
			$pdf->Cell(10,3,"Tipo de Consulta:  ".$_POST['consulta']);
			$pdf->ln(5);
			$pdf->Cell(17);
			$d = new Criteria();
			$d->add(DecanatoPeer::CP_DECANATO,$_POST['decanato']);
			$dec = DecanatoPeer::doSelect($d);
			$pdf->Cell(10,3,"Decanato:  ".$dec[0]->getNombre());
			$pdf->ln(5);
			$pdf->Cell(17);

			// aqui se debe usar el ajax de carrera?
			$pro = new Criteria();
			$pro->add(CarreraPeer::CP_CARRERA,$_POST['programa']);
			$programas = CarreraPeer::doSelect($pro);
			$pdf->Cell(10,3,"Programa:  ".$programas[0]->getNombre());

			$pdf->ln(5);
			$pdf->Cell(17);
			$pdf->Cell(10,3,"Semestre/a�os:  ".$_POST['semano']);
			$pdf->ln(5);
			$pdf->Cell(17);

			//aqui se debe validar el especialista con el ajax de tipo personal?
			$c5 = new Criteria();
            $c5->add(DatoPersonalPeer::USUARIO_ID,$_POST['tipopersonal']);
            $this->personal = DatoPersonalPeer::doSelect($c5);
			$nombreyapellido="";
			foreach($this->personal as $per)
			{
				$nombreyapellido = $per->getNombre()." ".$per->getApellido();
			}

			$pdf->Cell(10,3,"Atendido por:  ".$nombreyapellido);
			$pdf->ln(5);
			$pdf->Cell(17);

			// el motivo se encuentra en el index estatico aqui debajo se hace obtiene y se consulta bd

			$mo = new Criteria();
			$mo->add(MotivoConsultaPeer::ID,$_POST['motivo']);
			$motivo = MotivoConsultaPeer::doSelect($mo);
			$pdf->Cell(10,3,"Motivo:  ".$motivo[0]->getDescripcionMotivo());
			$pdf->ln(5);
			$pdf->Cell(17);

			// se debe hacer este criteria para obtener la edad?
			$pdf->Cell(10,3,"Edad:  ".$_POST['edad']);
			$pdf->ln(5);
			$pdf->Cell(17);
			$pdf->Cell(10,3,"Sexo:  ".$_POST['sexo']);
			$pdf->ln(5);
			$pdf->Cell(17);

			// el turno se encuentra en el index estatico aqui debajo se hace obtiene y se consulta bd
			$t = new Criteria();
			$t->add(TurnoPeer::ID,$_POST['turno']);
			$turno = TurnoPeer::doSelect($t);
			$pdf->Cell(10,3,"Turno:  ".$turno[0]->getNomTurno());
			$pdf->Ln(20);
			$pdf->SetX(30);
			$pdf->Cell(100,6,"Nombres y Apellidos",1,0,'C');
			$pdf->Ln(6);
			$pdf->SetX(30);

			// Registro para validar los listados de los estudiantes con coincidan con los datos anteriores
			//ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

			$citaest = new Criteria();
            /******************************************************/
            /*seleccionamos un criteria dependiendo del tipo de rango para las fechas*/
			if($this->getUser()->getAttribute('valor_rango') == "1")
			{
				$fecexplode1 = explode("/",$_POST['fechadesde']);
				$fecexplode2 = explode("/",$_POST['fechahasta']);
				$fecha1 = implode("-",array_reverse($fecexplode1));
				$fecha2 = implode("-",array_reverse($fecexplode2));
				$citaest->add(CitaPeer::FECHA, CitaPeer::FECHA." between '{$fecha1}' AND '{$fecha2}'", Criteria::CUSTOM);
			}
			if($this->getUser()->getAttribute('valor_rango') == "2")
			{
				$citaest->add(CitaPeer::FECHA,"substring(".CitaPeer::FECHA.",1,7) = '".date("Y")."-".$_POST['mes']."'",Criteria::CUSTOM);
				//$citaest->add(CitaPeer::FECHA,"substring(".CitaPeer::FECHA.",6,2) = '".$_POST['mes']."'",Criteria::CUSTOM);
			}
            /******************************************************
			/*seleccionamos un criteria dependiendo de consulta*/
			if($_POST['consulta']=='Exploratoria' or $_POST['consulta']=='Seguimiento')
			{
					$citaest->add(CitaPeer::TIPO_CITA,$_POST['consulta']);
			}
			/****************************************************/
			$citaest->add(CitaPeer::ESPECIALISTA_ID,$_POST['atendido']);
			$citaest->addJoin(CitaPeer::ID,ConsultaPeer::CITA_ID);
			$citaest->add(ConsultaPeer::MOTIVO_CONSULTA_ID,$_POST['motivo']);
			$citaest->add(CitaPeer::TURNO_ID,$_POST['turno']);
			$citas = CitaPeer::doSelect($citaest);
			$arreid=array();
			$i=0;
			foreach($citas as $datocita)
			{
				$arreid[$i]=$datocita->getSolicitanteId();
				$i++;
			}
			
			$ci = new Criteria();
			$ci->add(DatoEstudiantePeer::USUARIOATENEA_ID,$arreid,Criteria::IN);
			$cedulas = DatoEstudiantePeer::doSelect($ci);
			$arreced=array();
			$i=0;
			foreach($cedulas as $datocedula)
			{
				$arreced[$i]= (string) $datocedula->getCedula();
			}

			$ce = new Criteria();
			if($_POST['sexo']=='Femenino' or $_POST['sexo']=='Masculino')
			{
				$ce->add(EstudiantePeer::SEXO,$_POST['sexo']);
			}
			$ce->add(EstudiantePeer::EDAD,trim($_POST['edad']));
			$ce->add(EstudiantePeer::CF_CARRERA,$_POST['programa']);
			$ce->add(EstudiantePeer::CEDULA,$arreced,Criteria::IN);
			$ce->addJoin(EstudiantePeer::CP_ESTUDIANTE,AcademicoPeer::CF_ESTUDIANTE);
			$ce->add(AcademicoPeer::SEMESTRE,$romanos[$_POST['semano']]);
			$datos = EstudiantePeer::doSelect($ce);
			$contar=0;
			foreach($datos as $estudiante)
			{
				$pdf->SetX(30);
				$el_nombre = (string) $estudiante->getNombre()." ".$estudiante->getApellido();
				$pdf->Cell(100,6,$el_nombre,1,0,'L');
				$pdf->Ln(6);
				$contar++;
			}

			$pdf->SetX(30);
			$pdf->SetTextColor(100,100,255);
			$pdf->Cell(100,6,"Total de Estudiantes: $contar",1,0,'C');
			$pdf->SetTextColor(100,100,100);
			$pdf->Output();
		    return sfView::NONE;



}
}
